package com.fivefox.document.table.dto;

import com.alibaba.fastjson2.JSONObject;
import org.apache.commons.collections4.ListUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * 多维表格 数据新增模板
 *
 * @author lirenqi
 */
public class TableRecordsInsertDTO {

    /**
     * 本次请求将要新增的记录列表
     */
    public List<JSONObject> records = new ArrayList<>();

    public TableRecordsInsertDTO() {
    }

    public TableRecordsInsertDTO(List<JSONObject> records) {
        this.records = records;
    }

    public List<JSONObject> getRecordsParamList() {
        return records;
    }

    public void setRecordsParamList(List<JSONObject> records) {
        this.records = records;
    }

    /**
     * 添加数据项
     */
    public void addTableItem(JSONObject item) {
        JSONObject fields = new JSONObject();
        fields.put("fields", item);
        /** 数据表的字段，即数据表的列 */
        this.records.add(fields);
    }

    /**
     * 对list数据中进行分片
     *
     * @param fragment 指定集合每份元素数量
     * @return 返回当前类的集合
     */
    public List<TableRecordsInsertDTO> getListFragment(int fragment) {
        /** 为空则终止往下执行 */
        if (this.records == null) {
            return null;
        }
        if (this.records.size() == 0) {
            return null;
        }
        /** 返回结果 */
        List<TableRecordsInsertDTO> tableRecordsInsertDTOList = new ArrayList<>();
        /** 分片结果 */
        List<List<JSONObject>> arrayList = ListUtils.partition(this.records, fragment);
        /** 将分片结果添加至对象集合中，方便执行新增操作 */
        for (List<JSONObject> jsonObjectList : arrayList) {
            tableRecordsInsertDTOList.add(new TableRecordsInsertDTO(jsonObjectList));
        }
        return tableRecordsInsertDTOList;
    }

    @Override
    public String toString() {
        return "TableDTO{" + "records=" + records + '}';
    }
}
